
package SemanticoPacote;

import compilador_full.TabelaSimbolos;

/**
 *
 * @author Beto
 */
public class TermoLogico {

    public static void termoLogico(TabelaSimbolos tabelaSimbolos, String escopo) {
        
        //
        String TipoAtual = "";
        // define o tipo da variável
        if (tabelaSimbolos.RetornaTipoDeGlobalDeclarada(tabelaSimbolos.getLookahead()).equals("")) {
            // existe tipo
            TipoAtual = tabelaSimbolos.RetornaTipoDeLocalDeclarada(tabelaSimbolos.getLookahead(), escopo);
        } else {
            TipoAtual = tabelaSimbolos.RetornaTipoDeGlobalDeclarada(tabelaSimbolos.getLookahead());
        }
        //
        // seta o ultimo tipo
        tabelaSimbolos.setUltimoTipoVar(TipoAtual);
        //

        TermoRelacional.termoRelacional(tabelaSimbolos, escopo);//consome termo relacional

        while(tabelaSimbolos.getLookahead().equals("&&")) {
            tabelaSimbolos.soConsome();//consome &&

            //
            // define o tipo da variável
            if (tabelaSimbolos.RetornaTipoDeGlobalDeclarada(tabelaSimbolos.getLookahead()).equals("")) {
                // existe tipo
                TipoAtual = tabelaSimbolos.RetornaTipoDeLocalDeclarada(tabelaSimbolos.getLookahead(), escopo);
            } else {
                TipoAtual = tabelaSimbolos.RetornaTipoDeGlobalDeclarada(tabelaSimbolos.getLookahead());
            }
            //
            // seta o ultimo tipo
            tabelaSimbolos.setUltimoTipoVar(TipoAtual);
            //

            TermoRelacional.termoRelacional(tabelaSimbolos, escopo);//consome termo relacional
        }
    }
}
